/**
 * Description:
 * Class Name:ProcessorTest
 * Date:2022/4/23 18:00
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第14章_Annotation注解._14_3_自定义注解._14_3_3_使用注解的示例.示例1;

import java.lang.reflect.Method;

public class ProcessorTest {
    public static void process(String clazz) throws ClassNotFoundException{
        int passed = 0;
        int failed = 0;
        // 遍历clazz对应的类里的所有方法
        for (Method m :
                Class.forName("疯狂Java讲义.第14章_Annotation注解._14_3_自定义注解._14_3_3_使用注解的示例.示例1." + clazz).getMethods()) {
            // 如果该方法使用了@Testable 修饰
            if (m.isAnnotationPresent(Testable.class)){
                try {
                    // 调用m方法
                    m.invoke(null);
                    // 测试成功，passed计数器+1
                    passed++;
                }
                catch (Exception exception){
                    System.out.println("方法" + m + "运行失败，异常：" + exception.getCause());
                    // 测试出现异常，failed计数器+1
                    failed++;
                }
            }
        }
        // 统计测试结果
        System.out.println("共运行了：" + (passed + failed) + "个方法，其中：\n" + "失败了：" + failed + "\n" + "成功了：" + passed);
    }
}
